Polars是近年興起的Python資料處理工具,可以視為新世代的Pandas,其特色可從「快好省」三個面向來理解。
本系列文的目標受眾為(註1):
為了同時滿足兩種受眾,本系列文的Polars基本介紹([Day02]~[Day19]),會先以第一類朋友為主。但在每日最後,針對第二類朋友,可能會有一個codepanda
小節,聊聊在Pandas中相對應的操作及相關注意事項。
以下定義本系列文所用到的相關詞彙及慣用寫法。
稱呼pandas為Pandas,Polars為Polars,Great Tables為Great Tables或gt,R語言的gt為{gt}及Plotnine為Plotnine或p9。
導入Pandas時,以pd
做為該模組縮寫;而在導入Polars時,以pl
做為該模組縮寫。
在工作環境中呈現的series與dataframe,無論來自Pandas或Polars,都偏向美觀卻不適合出現在文章中,因此本系列文會以print()
後的型式來呈現。
橫為行(row),直為列(column)。
Series:
pl.Series
代稱Polars的Series
型別。pl.Series
所使用的屬性或函數時,會使用pl.Series.xxx
型式。pl.Series
的instance時,會使用Polars series或直接簡稱為series。pd.Series
代稱Pandas的Series
型別。pd.Series
所使用的屬性或函數時,會使用pd.Series.xxx
型式。pd.Series
的instance時,會使用Pandas series。DataFrame
pl.DataFrame
代稱Polars的DataFrame
型別。pl.DataFrame
所使用的屬性或函數時,會使用pl.DataFrame.xxx
型式。pl.DataFrame
的instance時,會使用Polars dataFrame或直接簡稱為dataframe。pd.DataFrame
代稱Pandas的DataFrame
型別。pd.DataFrame
所使用的屬性或函數時,會使用pd.DataFrame.xxx
型式。pd.DataFrame
的instance時,會使用Pandas dataframe。Expression
pl.Expr
代稱Polars的Expression
型別。pl.Expr
的instance時,會使用Polars expression、expression或直接簡稱為expr。Null
pl.Null
代稱Polars的Null
型別。pl.Null
的instance時,會使用Polars null或直接簡稱為null。形容callable時,會加上括號,例如pl.Series.set_sorted()
。而形容屬性時,不會加上括號,例如pl.Series.flags
。
假設有一個函數func
如下:
def func(a): ...
嚴格地說,「"a"」是func
的parameter,而當我們將值指定給「"a"」來呼叫func
時,該值稱為argument。但是現在兩者混用的情況已經相當常見,所以本系列文會使用a=
來同時形容parameter及argument兩種情況。
很重要,所以再講一次:
與您約定,在本系列文中看到如:series、dataframe、expr及null等名詞時,皆暗指其來自Polars。如果想表達該名詞來自其它如Pandas的模組時,會特別加上模組名,例如Pandas series或Pandas dataframe等。
各日大綱如下:
註1:由於Polars是由Rust所寫成,所以在編譯後可以在多種語言中被呼叫,Python只是其中之一,也是本系列文所要學習的。
註2:本系列文中多數範例大多來自Polars教學文件及API文件。
註3:關於[Day20]~[Day22],改寫自Matt Harrison所著的Effective Visualization。該書以Pandas搭配Matplotlib,講解如何繪製數種實用圖片,而小弟有幸受邀成為該書之一的審稿者。在此工作完成後,經Matt同意將Alta Ski Resort
範例,改寫為此三天的內容。
註4:Great Tables與Plotnine都是Posit大力支持的開源專案,分別對應R語言中的{gt}及{ggplot2}。
註5:Turtle Island為小弟編寫的套件,目的是希望能專注地編寫expression,而非處理相關的boilerplate code。